home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import java.io.File;
- import java.util.Vector;
- import javax.swing.AbstractListModel;
- import javax.swing.JFileChooser;
- import javax.swing.event.ListDataEvent;
-
- public class BasicDirectoryModel extends AbstractListModel implements PropertyChangeListener {
- private JFileChooser filechooser = null;
- private Vector fileCache = null;
- private LoadFilesThread loadThread = null;
- private Vector files = null;
- private Vector directories = null;
- private int fetchID = 0;
-
- public BasicDirectoryModel(JFileChooser var1) {
- this.filechooser = var1;
- this.validateFileCache();
- }
-
- // $FF: synthetic method
- static JFileChooser access$0(BasicDirectoryModel var0) {
- return var0.filechooser;
- }
-
- // $FF: synthetic method
- static int access$1(BasicDirectoryModel var0) {
- return var0.fetchID;
- }
-
- // $FF: synthetic method
- static Vector access$2(BasicDirectoryModel var0) {
- return var0.fileCache;
- }
-
- public boolean contains(Object var1) {
- return this.fileCache != null ? this.fileCache.contains(var1) : false;
- }
-
- public void fireContentsChanged() {
- this.files = null;
- this.directories = null;
- ((AbstractListModel)this).fireContentsChanged(this, 0, this.fileCache.size() - 1);
- }
-
- public Vector getDirectories() {
- if (this.directories != null) {
- return this.directories;
- } else {
- Vector var1 = this.getFiles();
- return this.directories;
- }
- }
-
- public Object getElementAt(int var1) {
- return this.fileCache != null ? this.fileCache.elementAt(var1) : null;
- }
-
- public Vector getFiles() {
- if (this.files != null) {
- return this.files;
- } else {
- this.files = new Vector();
- this.directories = new Vector();
- this.directories.addElement(this.filechooser.getFileSystemView().createFileObject(this.filechooser.getCurrentDirectory(), ".."));
-
- for(int var1 = 0; var1 < this.fileCache.size(); ++var1) {
- File var2 = (File)this.fileCache.elementAt(var1);
- if (this.filechooser.isTraversable(var2)) {
- this.directories.addElement(var2);
- } else {
- this.files.addElement(var2);
- }
- }
-
- return this.files;
- }
- }
-
- public int getSize() {
- return this.fileCache != null ? this.fileCache.size() : 0;
- }
-
- public int indexOf(Object var1) {
- return this.fileCache != null ? this.fileCache.indexOf(var1) : 0;
- }
-
- public void intervalAdded(ListDataEvent var1) {
- }
-
- public void intervalRemoved(ListDataEvent var1) {
- }
-
- public void invalidateFileCache() {
- this.files = null;
- this.directories = null;
- this.fileCache = null;
- }
-
- // $FF: renamed from: lt (java.io.File, java.io.File) boolean
- protected boolean method_0(File var1, File var2) {
- return var1.getName().compareTo(var2.getName()) < 0;
- }
-
- public void propertyChange(PropertyChangeEvent var1) {
- String var2 = var1.getPropertyName();
- if (var2 == "directoryChanged" || var2 == "fileViewChanged" || var2 == "fileFilterChanged" || var2 == "FileHidingChanged" || var2 == "fileSelectionChanged") {
- this.invalidateFileCache();
- this.validateFileCache();
- }
-
- }
-
- private void quickSort(Vector var1, int var2, int var3) {
- int var4 = var2;
- int var5 = var3;
- if (var3 > var2) {
- File var6 = (File)var1.elementAt((var2 + var3) / 2);
-
- while(var4 <= var5) {
- while(var4 < var3 && this.method_0((File)var1.elementAt(var4), var6)) {
- ++var4;
- }
-
- while(var5 > var2 && this.method_0(var6, (File)var1.elementAt(var5))) {
- --var5;
- }
-
- if (var4 <= var5) {
- this.swap(var1, var4, var5);
- ++var4;
- --var5;
- }
- }
-
- if (var2 < var5) {
- this.quickSort(var1, var2, var5);
- }
-
- if (var4 < var3) {
- this.quickSort(var1, var4, var3);
- }
- }
-
- }
-
- protected void sort(Vector var1) {
- this.quickSort(var1, 0, var1.size() - 1);
- }
-
- private void swap(Vector var1, int var2, int var3) {
- Object var4 = var1.elementAt(var2);
- var1.setElementAt(var1.elementAt(var3), var2);
- var1.setElementAt(var4, var3);
- }
-
- public void validateFileCache() {
- File var1 = this.filechooser.getCurrentDirectory();
- if (var1 == null) {
- this.invalidateFileCache();
- } else {
- if (this.loadThread != null) {
- this.loadThread.interrupt();
- }
-
- ++this.fetchID;
- this.invalidateFileCache();
- this.fileCache = new Vector(50);
- this.loadThread = new LoadFilesThread(this, var1, this.fetchID);
- this.loadThread.start();
- }
- }
- }
-